var maxSubArray = function (nums) {
  // 时间，空间都是O(N)
  const n = nums.length
  let left = 0, res = Number.MIN_SAFE_INTEGER, sum = 0;
  while (left < n) {
    if (sum >= 0) {
      sum += nums[left];
    }
    if (sum < 0) {
      sum = nums[left]
    }
    res = Math.max(sum, res)
    left++
  }
  return res
  // 时间O(N),空间O(1)
  // let pre = 0, maxAns = nums[0];
  // nums.forEach((x) => {
  //   pre = Math.max(pre + x, x);
  //   maxAns = Math.max(maxAns, pre);
  // });
  // return maxAns;
};
let nums = [0, -1, -2, 1]
console.log(maxSubArray(nums));